package com.sea.supply.service;

import com.sea.supply.entity.Produce;
import com.sea.supply.entity.ProduceDetail;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 陈鸿飞
 */
public interface ProduceDetailService {

    /**
     * 新增
     * @param produceDetail
     * @return
     */
    int save(ProduceDetail produceDetail);
    /**
     * 查询采购单明细
     * @param produceId
     * @return
     */
    List<ProduceDetail> findByProduceId(Integer produceId);
    /**
     * 更新明细数据
     * @param produceDetail
     * @return
     */
    int usave(ProduceDetail produceDetail);

    /**
     * 关单
     * @param produceDetail
     * @return
     */
    Integer updateFlag(ProduceDetail produceDetail);
    /**
     * 查找可收货数量
     * @param receivePo
     * @param receiveSku
     * @return
     */
    List<ProduceDetail> findReceiveNumber(String receivePo,String receiveSku,String channelName,String receiveDate);
    /**
     * 收货完成
     * @param id
     * @return
     */
    int updateReceiveNumber(Integer id);
    /**
     * 查询可收获数量
     * @param produceId
     * @return
     */
    int findReceive(Integer produceId);
    /**
     * 导出明细
     * @param idList
     * @return
     */
    List<ProduceDetail> exportProduceDetail(Integer[] idList);
    /**
     * 更新占有量
     * @param useNumber
     * @param id
     * @return
     */
    int updateUseNumber(Integer useNumber,Integer id);
    /**
     * 条件查询
     * @param orderSku
     * @param orderChannelName
     * @param orderDate
     * @param producePo
     * @return
     */
    ProduceDetail getIdByCnd(String orderSku, String orderChannelName, String orderDate, String producePo);
    /**
     * 导入国内仓分配
     * @param orderSku
     * @param orderChannelName
     * @param orderDate
     * @param producePo
     * @return
     */
    ProduceDetail getWareDistribute(String orderSku,
                                    String orderChannelName,
                                    String orderDate,
                                    String producePo);
    /**
     * 根据ID查找
     * @param id
     * @return
     */
    ProduceDetail findById(Integer id);
    /**
     * 更新剩余量
     * @param receiveNumber
     * @param id
     * @return
     */
    Integer updateSurplusNumber(Integer receiveNumber, Integer id);
    /**
     * 更新短装数量
     * @param produceDetail
     * @return
     */
    Integer updateShort(ProduceDetail produceDetail);

    Integer findByFirstProduce(String orderSku,String supplierName);

    /***
     * 更新预占有率
     * @param id
     * @return
     */
    Integer updateReadyUseNumber(Integer useReadyNumber,Integer id);


}
